#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N=1e3+10;


double w[N],p[N];
double wp[N];
int main()
{
	int n,d;
	double ret=0;
	cin>>n>>d;
	for(int i=1;i<=n;i++)
		cin>>w[i];
	for(int i=1;i<=n;i++)
		cin>>p[i];
	for(int i=1;i<=n;i++)
		wp[i]=p[i]/w[i];
	vector<int> v;
	for(int i=1;i<=n;i++)
		v.push_back(i);
	sort(v.begin(),v.end(),[&](const int x,const int y){
		return wp[x]>wp[y];
	});
	for(int i=0;i<n && d>0;i++)
	{
		if(d>=w[v[i]])
		{
			d-=w[v[i]];
			ret+=p[v[i]];
		}
		else{
			ret+=wp[v[i]]*d;
			d=0;
			
		}
	}
	printf("%.2lf",ret);
	return 0;
}
